home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / +look_here_1st!+ / reader_requests / alienbreed3d2 / print.s < prev    next >
Text File  |  1997-11-28  |  1KB  |  77 lines

  1. ***************************************************
  2. *   Print null-terminated text pointed to by a0   *
  3. *   at coords (d0,d1)                             *
  4. ***************************************************
  5. Print:
  6.     movem.l    a0-a3/d0-d3,-(sp)
  7.     move.l    FASTBUFFER,a1
  8.     muls.w    #ScreenWidth,d1
  9.     asl.l    #3,d1
  10.     ext.l    d0
  11.     add.l    d0,d0
  12.     move.l    d0,d2
  13.     add.l    d0,d0
  14.     add.l    d2,d0
  15.     add.l    d0,d1
  16.     lea    (a1,d1.l),a1
  17.     move.l    Font,a2
  18. .NextChar:
  19.     move.l    a1,a3
  20.     add.l    #6,a1
  21.     move.w    #0,d0
  22.     move.b    (a0)+,d0
  23.     beq.s    .DoneText
  24.     lsl.w    #6,d0
  25.     move.w    #0,d3
  26. .NextYPoint:
  27.     move.w    #0,d2
  28. .NextXPoint:
  29.     move.b    (a2,d0.w),d1
  30.     beq.s    .NoPoint
  31.     move.b    #255,(a3,d2.w)
  32. .NoPoint:
  33.     addq.w    #1,d0
  34.     addq.w    #1,d2
  35.     cmp.w    #8,d2
  36.     blt.s    .NextXPoint
  37.     add.l    #ScreenWidth,a3
  38.     addq.w    #1,d3
  39.     cmp.w    #8,d3
  40.     blt.s    .NextYPoint
  41.     bra.s    .NextChar
  42. .DoneText:
  43.     movem.l    (sp)+,a0-a3/d0-d3
  44.     rts
  45.  
  46. ***************************************
  47. *   Print value passed in PVal at     *
  48. *   coords passed in PXpos and PYos   *
  49. ***************************************
  50. PrintVal:
  51.     movem.l    a0-a1/d0-d4,-(sp)
  52.     move.l    PVal,d0
  53.     move.l    PXpos,d1
  54.     move.l    PYpos,d2
  55.     move.l    #.NumBuffer+8,a0
  56.     move.l    #.CharBuffer,a1
  57.     move.w    #7,d4
  58. .MakeTextLoop:
  59.     move.b    d0,d3
  60.     and.w    #$000f,d3
  61.     move.b    (a1,d3.w),-(a0)
  62.     lsr.l    #4,d0
  63.     dbra    d4,.MakeTextLoop
  64.     move.l    d1,d0
  65.     move.l    d2,d1
  66.     bsr    Print
  67.     movem.l    (sp)+,a0-a1/d0-d4
  68.     rts
  69.  
  70. .NumBuffer:    ds.b    8
  71.         dc.b    0
  72. .CharBuffer:    dc.b    "0123456789ABCDEF"
  73.     even
  74. PXpos:        dc.l    0
  75. PYpos:        dc.l    0
  76. PVal:        dc.l    0
  77.